/*
 * 题目描述：给出一个数N (<= 10^10)和K（< 100），通过反复将N加上它的相反数来使其变成回文数，迭代最多不超过K次
 *
 * 坑:
 *     1. 需要注意到N的最大数值可能会超过int，就算使用long long因为还需要经过K次迭代还是有可能溢出，所以应该使用字符串
 *     2. 对于输入067和67这两种情况是不同的，头部的0不能被忽略
 *     3. 注意给出的N可能就已经是一个回文数，此时应该直接说输出N和0
 *
 */

#include <iostream>
#include <string>
#include <algorithm>
#include <sstream>
using namespace std;

bool isPalin(string num){
    for(int i=0; i<num.length(); i++){
        if (num[i] != num[num.length() - i - 1]) {
            return false;
        }
    }
    return true;
}

int main() {
    string num;
    int k;
    cin >> num >> k;
    //给出数字已经是回文数的直接返回
    if(num.size() < 2||isPalin(num)){
        cout << num << endl << 0;
        return 0;
    }
    string res = "";
    for(int j=1; j<=k; j++){
        int c = 0;
        for (int i = 0; i < num.length(); i++) {
            int d = num[num.length() - 1 - i] - '0' + num[i] - '0' + c;
            c = d / 10;
            d %= 10;
            res.insert(res.begin(), d + '0');
        }
        if(c>0){
            res.insert(res.begin(), c + '0');
        }
        if(isPalin(res)){
            cout << res << endl << j << endl;
            return 0;
        }
        num = res;
        res = "";
    }
    cout << num << endl << k;
    return 0;
}